Example
আপনার নিজস্ব Vue সার্ভার পান
<input> উপাদান এবং ডেটা অ্যাট্রিবিউটের মধ্যে একটি দ্বিমুখী বাঁধাই তৈরি করতে v-মডেল নির্দেশিকা ব্যবহার করে।
<template>
<h1>v-model Example</h1>
<p>Write something, and see the 'inputValue' data property update automatically.</p>
<input type="text" v-model="inputValue">
<p>inputValue property: "{{ inputValue }}"</p>
</template>
নীচে আরো উদাহরণ দেখুন.
Definition and Usage
ভি-মডেল নির্দেশিকাটি একটি ফর্ম ইনপুট উপাদান, বা একটি Vue উদাহরণ বৈশিষ্ট্য এবং একটি উপাদানের মধ্যে একটি দ্বিমুখী বাঁধাই তৈরি করতে ব্যবহৃত হয়।
Form Input Elements with v-model
ফর্ম ইনপুট উপাদান যা v-মডেলের সাথে ব্যবহার করা যেতে পারে তা হল <input>, <select> এবং <textarea>।
ইনপুট উপাদান গঠনের জন্য ভি-মডেলের সাথে দ্বিমুখী বাঁধাই এইভাবে কাজ করে:
- যখন Vue ইনপুট মানের পরিবর্তন সনাক্ত করে, তখন এটি সেই অনুযায়ী সংশ্লিষ্ট ডেটা বৈশিষ্ট্য আপডেট করে। (এইচটিএমএল -> জাভাস্ক্রিপ্ট)
- যখন Vue একটি Vue ইনস্ট্যান্স সম্পত্তিতে একটি পরিবর্তন সনাক্ত করে, তখন এটি সেই অনুযায়ী সংশ্লিষ্ট ইনপুট মান আপডেট করে। (জাভাস্ক্রিপ্ট -> এইচটিএমএল)
Components with v-model
যখন v-মডেল একটি কম্পোনেন্টে ব্যবহার করা হয়, তখন কম্পোনেন্ট ইন্টারফেসকে অবশ্যই প্রপস এবং ইমিট দিয়ে সঠিকভাবে কনফিগার করতে হবে, দ্বিমুখী বাইন্ডিং অর্জন করতে।
উপাদানগুলির সাথে v-মডেলের সাথে দ্বিমুখী বাঁধাই এইরকম কাজ করে:
- যখন Vue প্যারেন্ট ইভেন্ট সম্পত্তিতে একটি পরিবর্তন সনাক্ত করে, তখন নতুন মানটি একটি প্রপ হিসাবে উপাদানটিতে প্রেরণ করা হয়।
- যখন Vue একটি শিশু উপাদানে পরিবর্তন শনাক্ত করে, তখন নতুন মানটি অভিভাবকের কাছে একটি নির্গত ইভেন্ট হিসাবে পাঠানো হয়।
যখন একটি উপাদানে v-মডেল ব্যবহার করা হয়, তখন ডিফল্ট প্রপ নামটি হয় 'modelValue', এবং ডিফল্ট নির্গত ইভেন্টের নাম 'update:modelValue'।
যখন কোনো কম্পোনেন্টে v-মডেল ব্যবহার করা হয়, Vue ইনস্ট্যান্স ডেটা প্রপার্টি ব্যবহার না করে get() এবং set() পদ্ধতির সাথে কম্পিউটেড প্রপার্টি ব্যবহার করতে পারে।
ডিফল্ট 'modelValue' এবং 'update:modelValue'-এর পরিবর্তে v-model ব্যবহার করে বিভিন্ন নাম সেট করা যেতে পারে।
একটি উপাদানের দ্বিমুখী বাইন্ডিং হিসাবে একাধিক মান থাকতে, এই জাতীয় প্রতিটি মানকে অবশ্যই নিজস্ব v-মডেল দিয়ে সংজ্ঞায়িত করতে হবে।
Modifiers
| রূপান্তরকারী | বিস্তারিত |
|---|---|
| .lazy | Vue কখন সিঙ্ক্রোনাইজ করার জন্য ইনপুট ইভেন্টের পরিবর্তে পরিবর্তন ইভেন্ট ব্যবহার করে। এর মানে হল যে ব্যবহারকারীকে প্রথমে ইনপুট পরিবর্তন করতে হবে, এবং তারপর ইভেন্ট অ্যাট্রিবিউট মান আপডেট করার আগে ইনপুট উপাদান থেকে ফোকাস পরিবর্তন করতে হবে। |
| .number | ইনপুটকে একটি সংখ্যায় রূপান্তর করে। <input type="number"> ব্যবহার করার সময় এটি স্বয়ংক্রিয়ভাবে সম্পন্ন হয়। |
| .trim | ইনপুটের শুরুতে এবং শেষে সাদা স্থানগুলি সরিয়ে দেয়। |
| custom | একটি v-মডেলের জন্য একটি কাস্টম মডিফায়ার তৈরি করতে, আপনাকে প্রথমে 'modelModifiers' প্রপটি সংজ্ঞায়িত করতে হবে নতুন মডিফায়ার সংরক্ষণ করার জন্য। কনভার্টার ফাংশন একটি পদ্ধতিতে লেখা হয়। যদি মডিফায়ার সেট করা থাকে, তাহলে প্যারেন্ট কম্পোনেন্টে মান ফেরত দেওয়ার আগে পদ্ধতিতে উপযুক্ত কোডটি কার্যকর হয়। |
More Examples
Example 1
'inputValue' অ্যাট্রিবিউট মান পরিবর্তন করতে পরিসর (<input type="range">) ব্যবহার করে। <input type="text"> উপাদানটি স্বয়ংক্রিয়ভাবে আপডেট হয় কারণ এটি 'inputValue' বৈশিষ্ট্যের সাথে v-মডেলের সাথে আবদ্ধ।
<template>
<h1>v-model Example</h1>
<p>Drag the slider to change the 'inputValue' data property, and see the input text field update automatically because of the two-way binding from v-model.</p>
<input type="range" min="-50" max="50" v-on:input="sliderChange" value="4">
<p>inputValue property: "{{ inputValue }}"</p>
<input type="text" v-model="inputValue">
</template>
<script>
export default {
data() {
return {
inputValue: null
};
},
methods: {
sliderChange(evt) {
this.inputValue = evt.target.value
}
}
}
</script>
Example 2
<input> উপাদানে পরিবর্তনের সময় প্যারেন্ট 'টেক্সট' বৈশিষ্ট্য আপডেট করার জন্য প্রপস এবং ইমিট সহ উপাদানে v-মডেল ব্যবহার করা।
App.vue:
<template>
<h2>Example v-model Directive</h2>
<p>App.vue 'text' property: "{{ text }}"</p>
<comp-one v-model="text"/>
</template>
<script>
export default {
data() {
return {
text: 'Say Cheese'
}
}
}
</script>
CompOne.vue:
<template>
<div>
<h3>Component</h3>
<p>Write something in the text input field below to see that changes here are emitted from the component, and the parent 'text' property gets updated by the use of v-model.</p>
<input
:value="modelValue"
@input="$emit('update:modelValue', $event.target.value)"
/>
</div>
</template>
<script>
export default {
props: ['modelValue'],
emits: ['update:modelValue']
}
</script>
<style scoped>
div {
border: solid black 1px;
padding: 10px;
margin: 20px 0;
max-width: 500px;
}
</style>
Example 7
.lazy ব্যবহার করে যাতে ব্যবহারকারী প্রথমে ইনপুট উপাদান পরিবর্তন করে এবং তারপর v-মডেলের সাথে সম্পত্তি আপডেট করার আগে ইনপুট উপাদান থেকে ফোকাস পরিবর্তন করে।
<template>
<h1>v-model Example</h1>
<p>Using the '.lazy' modifier, you must first write something, then click somewhere else, or use the tab key to switch focus away from the input element, before the property get updated.</p>
<input type="text" v-model.lazy="inputValue">
<p>inputValue property: "{{ inputValue }}"</p>
</template>
<script>
export default {
data() {
return {
inputValue: null
};
}
}
</script>
Example 8
ইনপুটের শুরুতে এবং শেষে সাদা স্থান সরাতে .trim ব্যবহার করে।
<template>
<h1>v-model Example</h1>
<p>Using the '.trim' modifier will remove any white spaces at the start and end of the input.</p>
<p>Add white spaces at the start and end in the input fields below to see the difference with or with out '.trim'.</p>
<p>No '.trim': <input type="text" v-model="inputVal1"> "<pre>{{ inputVal1 }}</pre>"</p>
<p>With '.trim': <input type="text" v-model.trim="inputVal2"> "<pre>{{ inputVal2 }}</pre>"</p>
</template>
<script>
export default {
data() {
return {
inputVal1: 'Hello',
inputVal2: 'Hi'
};
}
}
</script>
Exercise
প্রশিক্ষণ:
Vue.js v-model directive ?